home *** CD-ROM | disk | FTP | other *** search
- #ifndef List_h
- #define List_h
-
- /*
- * List.h
- *
- * SOFTWARE RIGHTS
- *
- * We reserve no LEGAL rights to SORCERER -- SORCERER is in the public
- * domain. An individual or company may do whatever they wish with
- * source code distributed with SORCERER or the code generated by
- * SORCERER, including the incorporation of SORCERER, or its output, into
- * commerical software.
- *
- * We encourage users to develop software with SORCERER. However, we do
- * ask that credit is given to us for developing SORCERER. By "credit",
- * we mean that if you incorporate our source code into one of your
- * programs (commercial product, research project, or otherwise) that you
- * acknowledge this fact somewhere in the documentation, research report,
- * etc... If you like SORCERER and have developed a nice tool with the
- * output, please mention that you developed it using SORCERER. In
- * addition, we ask that this header remain intact in our source code.
- * As long as these guidelines are kept, we expect to continue enhancing
- * this system and expect to make other tools available as they are
- * completed.
- *
- * PCCTS 1.31
- * Terence Parr
- * Parr Research Corporation
- * with Purdue University and AHPCRC, University of Minnesota
- * 1992-1995
- */
-
- #include <stdio.h>
- #include <stdlib.h>
-
- #include "PCCTSAST.h"
-
- class PCCTS_AST;
-
- class ListNode {
- protected:
- void *_elem; /* pointer to any kind of element */
- ListNode *_next;
- public:
- ListNode() {_elem=_next=NULL;}
- virtual ~ListNode() {_elem=_next=NULL;}
- void *elem() { return _elem; }
- void setElem(void *e) { _elem = e; }
- setNext(ListNode *t) { _next = t; }
- ListNode *next() { return _next; }
- };
-
- class List {
- ListNode *head, *tail;
- public:
- List() {head=tail=NULL;}
- virtual ~List() {head=tail=NULL;}
- virtual void *iterate(ListNode **);
- virtual void add(void *e);
- virtual void lfree();
- virtual PCCTS_AST *to_ast(List list);
- require(int e,char *err){ if ( !e ) panic(err); }
- virtual panic(char *err){ fprintf(stderr, "List panic: %s\n", err); exit(1); }
- };
-
- #endif
-